#ifndef EMA_H
#define EMA_H

#include <vector>
#include <cmath>

class Ema
{
public:
    Ema(int period, bool isInitialized =false);
    void reset();
    double calculate(double price);
    std::vector<double> calculateBatch(const std::vector<double>& prices);
    const double getCurrentEMA();

    // 获取周期
    const int getPeriod();

    // 获取平滑系数
    const double getAlpha();
private:
    double alpha;       // 平滑系数 = 2 / (n + 1)
    double currentEMA;  // 当前EMA值
    int period;         // 计算周期
    bool isInitialized; // 是否已经初始化
};
#endif // EMA_H
